/* 
 * File:   RepositorioBuilder.h
 * Author: max
 *
 * Created on June 9, 2013, 2:12 PM
 */

#ifndef REPOSITORIOBUILDER_H
#define	REPOSITORIOBUILDER_H

#include <string>
#include "common_Repositorio.h"
#include "common_RepoItem.h"

using namespace std;

namespace TP { namespace Archivos {

#define VERSION_ARCHIVO_DEFAULT 1
#define VERSION_REPOSITORIO_DEFAULT 1    
    
class RepositorioBuilder {

public:

    RepositorioBuilder();

    virtual ~RepositorioBuilder();

    /* ConstruirDeRutaAU:
     *      Instancia un repositorio e inicializa la estructura a 
     * partir del directorio que se especifíca por parámetro.  Para todo archivo 
     * contenido en el directorio, 
     * computa el nombre, la ruta, la ruta completa y la lista de hashes asociadas 
     * almacenando y disponibilizando dicha información.
     * 
     */    
    Repositorio* ConstruirDeRutaDirectorio(const string& pRutaDirectorio);

private:
    
    void ComputarHashesDeArchivo (RepoItem* pItem);
    
    RepoItem* CrearRepoItem (const string &pRutaDirectorio, const string &pNombreArchivo);
};

}}

#endif	/* REPOSITORIOBUILDER_H */

